import cv2
import numpy as np

# 读取图像
image = cv2.imread('blue_background.jpg')

# 将图像从BGR颜色空间转换为HSV颜色空间
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

# 定义蓝色的HSV范围
lower_blue = np.array([90, 50, 50])
upper_blue = np.array([130, 255, 255])

# 创建掩膜，标识出蓝色区域
mask = cv2.inRange(hsv, lower_blue, upper_blue)

# 将掩膜反转，得到非蓝色区域
mask_inv = cv2.bitwise_not(mask)

# 将非蓝色区域保留原图
background = cv2.bitwise_and(image, image, mask=mask_inv)

# 创建一个红色背景
red_background = np.zeros_like(image, np.uint8)
red_background[:] = (0, 0, 255)  # 红色 (BGR格式)

# 将红色背景与蓝色区域结合
red_background = cv2.bitwise_and(red_background, red_background, mask=mask)

# 将红色背景与原图结合
result = cv2.add(background, red_background)

# 保存结果
cv2.imwrite('red_background.jpg', result)

# 显示结果
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()